package net.servir.capacidades.web.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import net.servir.capacidades.model.CorreoMasivo;
import net.servir.capacidades.model.CorreoRegular;
import net.servir.capacidades.model.ParticipanteBusqueda;
import net.servir.capacidades.model.Test;
import net.servir.capacidades.model.Usuario;
import net.servir.capacidades.model.Sistema;
import net.servir.capacidades.model.jsp.JspCorreoEdicion;
import net.servir.capacidades.model.jsp.JspRedactarCorreo;
import net.servir.capacidades.service.CapacidadesService;
import net.servir.capacidades.service.CensoService;
import net.servir.capacidades.service.CorreoService;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.Iterator;
import java.util.List;

@Controller
public class CorreoRegularEdicionController {

	@Autowired 
	private CapacidadesService capacidadesService;
	@Autowired
	private CensoService censoService;
	@Autowired 
	private CorreoService correoService;
	@RequestMapping("/correoRegularEdicion.htm")
	public @ModelAttribute("editarCorreo")
	JspCorreoEdicion participanteBusqueda(HttpServletRequest request) {
		
		//************************************************************
		// se obtiene el dni de la session activa
		//************************************************************
		HttpSession session = request.getSession();
		String cod_session =session.getId();

		String dniUsuario = null;
		if(session.getAttribute("dni") != null)			
			dniUsuario = session.getAttribute("dni").toString();
		
		//Obtenemos los datos del Usuario
		Usuario usuario = capacidadesService.GetUsuarioIdentificacion(dniUsuario);
		Boolean prueba = false;
		Boolean envio = false;
		String accion = "";
		String asunto = "";
		String cuerpo = "";
		String correo_pruebas = "";
		String codTipoCorreo = "";
		Integer id_correo = 0;
		Integer idSistema = 0;
		Integer idAmbito= 0;
		
		if (usuario == null)
			return null;
			
		//************************************************************
		
		JspCorreoEdicion obj = new JspCorreoEdicion();
		// Colecciones
		
		obj.setSistemas(capacidadesService.ObtenerSistema());
		
		if (request.getParameter("idSistema") != null && !request.getParameter("idSistema").equals("0"))
			idSistema = Integer.parseInt(request.getParameter("idSistema"));
		
		if (idSistema >0 )
			obj.setAmbitos(capacidadesService.ObtenerAmbito(idSistema));

		if (request.getParameter("idAmbito") != null && !request.getParameter("idAmbito").equals("0"))
			idAmbito = Integer.parseInt(request.getParameter("idAmbito"));		

		obj.setTiposCorreo(correoService.obtenerTiposCorreo());
		
		if (request.getParameter("codTipoCorreo") != null)
			codTipoCorreo = request.getParameter("codTipoCorreo");		
		
		accion = request.getParameter("accion");
		asunto = request.getParameter("asunto");
		correo_pruebas = request.getParameter("correo_pruebas");
		cuerpo = request.getParameter("texto");
		
		CorreoRegular correo= new CorreoRegular();

		// obtenemos el correo masivo vigente
		if (accion.equals("EDITAR"))
		{
			// obj.setCorreoMasivo(censoService.getCorreoMasivo(dniUsuario));
			obj.setAccion("REFRESH");
		}
		else if (accion.equals("REFRESH"))
		{
			correo.setAsunto("");
			correo.setCuerpo("");
			correo.setAsunto("");
			correo.setCod_tipo("0");
			correo.setId_sistema(idSistema);
			correo.setId_ambito(idAmbito);
			obj.setCorreo_pruebas(correo_pruebas.toLowerCase());
			obj.setCorreoEdicion(correo);
		}
		else if (accion.equals("GRABAR") || accion.equals("PRUEBA"))
		{
			correo.setAsunto(asunto);
			correo.setCuerpo(cuerpo);
			correo.setAsunto(asunto.toLowerCase());
			correo.setCod_tipo(codTipoCorreo);
			correo.setId_sistema(idSistema);
			correo.setId_ambito(idAmbito);
			obj.setCorreo_pruebas(correo_pruebas.toLowerCase());
			obj.setCorreoEdicion(correo);
		}
		else if (accion.equals("CHANGE_TIPO")) 
		{
			correo.setCod_tipo(codTipoCorreo);
			correo.setId_sistema(idSistema);
			correo.setId_ambito(idAmbito);
			obj.setCorreoEdicion(correoService.getCorreoRegular(correo));
			correo.setAsunto(correo.getAsunto().toLowerCase());
			obj.setCorreo_pruebas(correo_pruebas.toLowerCase());
			obj.setCorreoEdicion(correo);
		}
		
		if (accion != null)
		{
			if (accion.equals("PRUEBA"))
			{
				prueba = true;
				accion = "GRABAR";
			}
			if (accion.equals("ENVIO"))
			{
				envio = true;
				accion = "GRABAR";
			}
			
			if (accion.equals("GRABAR"))
			{
				censoService.grabarCorreoRegular(correo);
				obj.setCorreoEdicion(correo);
				obj.setMensaje_usuario("Datos grabados correctamente");
			}
			
			if (accion.equals("ENVIARCORREOMASIVO")){
				envio = true;
			}
		}
		
		if (prueba)
		{
			censoService.ejecutarPruebaCorreo(correo,  correo_pruebas);
			obj.setMensaje_usuario("La prueba de envio masivo se ejecuto correctamente");
		}
		
		if(envio){
			censoService.ejecutarEnvioMasivo(codTipoCorreo,dniUsuario);
			obj.setMensaje_usuario("El envio masivo se ejecutÒ correctamente");
		}
		return obj;
	}
}
